#ifndef __DIGITAL_H
#define __DIGITAL_H

#include "gpio.h"
#include "stdio.h"
#include "lcd1602.h"
#include "memory.h"
#include "digital.h"

/***********************************************************************************************************************
��������п���
***********************************************************************************************************************/
typedef struct _DIGITAL_T
{
    INT8U Bitn:4,
              delay_us:4;
}DIGITAL_T;

/***********************************************************************************************************************
�������ʾ��
***********************************************************************************************************************/
#define NUM_0 0x3F
#define NUM_1    0x06
#define NUM_2    0x5B
#define NUM_3    0x4F
#define NUM_4    0x66
#define NUM_5    0x6D
#define NUM_6    0x7D
#define NUM_7    0x07
#define NUM_8    0x7F
#define NUM_9    0x6F
#define SYMBOL_SUB 0x40
#define DIGITAL_BUFF_MAX 8
/***********************************************************************************************************************
�����λѡ
***********************************************************************************************************************/
#define DECODER_74LS138_ODR P3
#define DECODER_SELECT_BIT(val, bitn)  do{val &= ~((0x07 + 0x04) << 3); val |= (((bitn & 0x07 ) + 0x04) << 3);}while(0)
#define DIGITAL_SELECT_BIT(bitn) DECODER_SELECT_BIT(DECODER_74LS138_ODR, bitn)

/***********************************************************************************************************************
����ܶ�ѡ
***********************************************************************************************************************/
#define  DIGITAL_CODE_ODR P1
#define  DIGITAL_WRITE_CODE(val, num) do{val = num;}while(0);
#define  DIGITAL_SEND_NUM(num)     DIGITAL_WRITE_CODE(DIGITAL_CODE_ODR, num)
/***********************************************************************************************************************
����ܺ����ӿ�
***********************************************************************************************************************/
extern void  digital_init(void);
extern INT8U digital_write_data(INT8U _bit, INT8U _data);
extern void  digital_display_process(void);
extern void  digital_display_debug(void);
#endif
